package opf5.entities.notificaciones;

import opf5.entities.dominio.Inscripcion;
import opf5.entities.dominio.Jugador;
import opf5.entities.dominio.Partido;
import opf5.entities.partidos.PartidoDecorator;
import opf5.utilidades.Email;
import opf5.utilidades.EnviadorDeEmail;

public class PartidoNotificadorInscripcionDecorator extends PartidoDecorator {
	private EnviadorDeEmail enviadorDeEmail;

	public PartidoNotificadorInscripcionDecorator(Partido partido,
			EnviadorDeEmail e) {
		super(partido);
		enviadorDeEmail = e;
	}
	
	@Override
	public void inscribir(Inscripcion nuevaInscripcion) {
		super.inscribir(nuevaInscripcion);
		notificarInscripcionAJugadores(nuevaInscripcion);
	}

	private void notificarInscripcionAJugadores(Inscripcion nuevaInscripcion) {
		for (Inscripcion i : getInscripciones()) {
			if (! i.equals(nuevaInscripcion))
				notificarInscripcionAJugador(i.getJugador());
		}
	}

	private void notificarInscripcionAJugador(Jugador jugador) {
		Email email = new Email(
				jugador.getEmail(),
				jugador.getNombre() + ": Un Jugador se incribio al partido",
				jugador.getNombre() + ": Un Jugador se incribio al partido");
		
		enviadorDeEmail.enviarEmail(email);
	}

}
